package main

import (
	"fmt"
	"gopkg.in/ini.v1"
	"log"
)

func main() {
	cfg, err := ini.Load("my.ini")
	if err != nil {
		log.Fatal("Fail to read file: ", err)
	}
	fmt.Println("App Name:", cfg.Section("").Key("app_name").String())

	fmt.Println("Log Level:", cfg.Section("").Key("log_level").String())

	fmt.Println("MySQL IP:", cfg.Section("mysql").Key("ip").String())

	mysqlPort, err := cfg.Section("mysql").Key("port").Int()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("MySQL Port:", mysqlPort)

	fmt.Println("MySQL User:", cfg.Section("mysql").Key("user").String())

	fmt.Println("MySQL Password:", cfg.Section("mysql").Key("password").String())

	fmt.Println("MySQL Database:", cfg.Section("mysql").Key("database").String())

	fmt.Println("Redis IP:", cfg.Section("redis").Key("ip").String())

	redisPort, err := cfg.Section("redis").Key("port").Int()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Redis Port:", redisPort)

	/*在ini文件中，每个键值对占用一行，中间使用=隔开。以#开头的内容为注释。
	ini文件是以区分（Section）组织的。分区以[name]开始，在下一个分区前结束。
	所有分区前的内容属于默认分区，如my.ini中的app_name和log_level.
	*/

	sections := cfg.Sections()
	names := cfg.SectionStrings()
	fmt.Println("sections: ", sections)
	fmt.Println("names: ", names)

}
